<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
   URL 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
  </title>
  <link rel="shortcut icon" href="/user_guide/../images/design/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" media="all" href="/user_guide/userguide.css" />
  <link rel="search" href="/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索" />
  <link rel="canonical" href="/user_guide/helpers/url_helper.html" />
  <script type="text/javascript" src="/user_guide/nav/nav.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/prototype.lite.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/moo.fx.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/user_guide_menu.js">
  </script>
  <meta name="robots" content="all" />
  <meta name="author" content="ExpressionEngine Dev Team" />
  <meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
 </head>
 <body>
  <!-- START NAVIGATION -->
  <div id="nav">
   <div id="nav_inner">
    <script type="text/javascript">
     create_menu('/user_guide/');
    </script>
   </div>
  </div>
  <script type="text/javascript">
   _setNavigation();
  </script>
  <div id="nav2">
   <a name="top">
   </a>
   <a href="javascript:void(0);" onclick="myHeight.toggle();">
    <img src="/user_guide/images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" />
   </a>
  </div>
  <div id="masthead">
   <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <tr>
     <td width="350">
      <h1>
       CodeIgniter 用户指南 版本 2.0.0
      </h1>
     </td>
     
     <td id="breadcrumb_right">
      <a href="/user_guide/toc.html">
       目录页
      </a>
     </td>
    </tr>
   </table>
  </div>
  <!-- END NAVIGATION -->
  <!-- START BREADCRUMB -->
  <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
   <tr>
    <td id="breadcrumb">
     <a href="/" target="_blank">
      CodeIgniter 中国首页
     </a>
     &nbsp;&#8250;&nbsp;
     <a href="/user_guide/toc.html">用户指南目录</a>
     &nbsp;&#8250;&nbsp;URL 辅助函数
    </td>
    <td id="searchbox">
     <form method="get" action="http://www.google.com/search" target="google_window">
      <input type="hidden" name="client" value="pub-0176846097796333" />
      <input type="hidden" name="forid" value="1" />
      <input type="hidden" name="ie" value="UTF-8" />
      <input type="hidden" name="oe" value="UTF-8" />
      <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
      搜索用户指南&nbsp;
      <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
      &nbsp;
      <input type="submit" class="submit" name="sa" value="Go" />
     </form>
    </td>
   </tr>
  </table>
  <!-- END BREADCRUMB -->
  <div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
   <a href="http://codeigniter.com/user_guide/helpers/url_helper.html" target="_blank">
    查看原文
   </a>
  </div>
  <!--<br clear="all"  />-->
  <!-- START CONTENT -->
  <div id="content">
   <h1>
    URL 辅助函数
   </h1>
   <p>
    URL 辅助函数文件包含一些在处理 URL 中很有用的函数
   </p>
   <h2>
    加载辅助函数
   </h2>
   <p>
    本辅助函数通过如下代码加载:
   </p>
   <code>
    $this-&gt;load-&gt;helper('url');
   </code>
   <p>
    可用函数如下:
   </p>
   <h2>
    site_url()
   </h2>
   <p>
    返回以 config.php 中指定的 base_url 和
    <dfn>
     index_page
    </dfn>
    ，还有传递给函数的 URI 段参数拼接成的字符串.
   </p>
   <p>
    无论什么时候需要生成 URL ，都鼓励您使用该函数, 这样当您的根 URL 改变的时候更具有可移植性。[注：根 URL 指 config.php 中指定的 base_url 和
    <dfn>
     index_page
    </dfn>
    --IT不倒翁]
   </p>
   <p>
    做为参数传递给该函数的 URI 段可以是一个字符串，也可以是一个数组. 下面是一个字符串的例子:
   </p>
   <code>
    echo site_url("news/local/123");
   </code>
   <p>
    上面的例子将返回: http://example.com/index.php/news/local/123
   </p>
   <p>
    <kbd>
     注意：
    </kbd>
    如果config中开启了
    <kbd>
     enable_query_strings
    </kbd>
    ,则连接符由/改为?，上面的url会返回这样：
   </p>
   <p>
    http://example.com/index.php
    <kbd>
     ?
    </kbd>
    news/local/123
   </p>
   <p>
    所以这里要注意，如果你开启了get传值的话，请注意这里的变化。
   </p>
   <p>
    这是一个以数组形式传递 URI 段的例子:
   </p>
   <code>
    $segments = array('news', 'local', '123');
    <br />
    <br />
    echo site_url($segments);
   </code>
   <h2>
    base_url()
   </h2>
   <p>
    返回在 config.php 中设定的 base_url. 例:
   </p>
   <code>
    echo base_url();
   </code>
   <h2>
    current_url()
   </h2>
   <p>
    返回当前正在查看的页面的完整URL(包括段)。
   </p>
   <h2>
    uri_string()
   </h2>
   <p>
    返回任何包含了此函数的页面的URI段。比如说，要是你的URL是这样的:
   </p>
   <code>
    http://some-site.com/blog/comments/123
   </code>
   <p>
    此函数将会返回:
   </p>
   <code>
    /blog/comments/123
   </code>
   <p>
    注：我测试的结果：
   </p>
   <code>
    blog/comments/123
   </code>
   <h2>
    index_page()
   </h2>
   <p>
    返回在 config.php 中设定的 index_page. 例:
   </p>
   <code>
    echo index_page();
   </code>
   <h2>
    anchor()
   </h2>
   <p>
    创建基于你的本地站点URL(如 www.your-site.com )的标准锚链接:【注：我理解为 config.php 文件中设定的根路径--IT不倒翁】
   </p>
   <code>
    <a href="http://example.com">
     Click Here
    </a>
   </code>
   <p>
    它有三个可选参数:
   </p>
   <code>
    anchor(
    <var>
     uri segments
    </var>
    ,
    <var>
     text
    </var>
    ,
    <var>
     attributes
    </var>
    )
   </code>
   <p>
    第一个参数包含你想附加到URL的任何段.像上面的
    <dfn>
     site_url()
    </dfn>
    函数一样,段可以是字符串或数组.
   </p>
   <p>
    <strong>
     注意:
    </strong>
    &nbsp; 如果你创建在应用程序内部的链接没有包含基本URL(http://...),这个参数会从你配置文件信息中自动加载。只需要写上你的 URL 分段即可。
   </p>
   <p>
    第二个参数是你想给链接的名字.如果让它为空,将会由URL(替代).
   </p>
   <p>
    第三个参数包含一组你想附加给链接的属性.这些属性可以是简单的字符串或相关的数组.
   </p>
   <p>
    这里有一些例子:
   </p>
   <code>
    echo anchor('news/local/123', 'My News', 'title="News title"');
   </code>
   <p>
    输出(链接名字'My News'): &lt;a href="http://example.com/index.php/news/local/123" title="News title">My News&lt;/a>
   </p>
   <code>
    echo anchor('news/local/123', 'My News', array('title' => 'The best news!'));
   </code>
   <p>
    输出(鼠标放在上面会有'The best news!'提示):
    <a href="http://example.com/index.php/news/local/123" title="The best news!">
     My News
    </a>
   </p>
   <h2>
    anchor_popup()
   </h2>
   <p>
    几乎和
    <dfn>
     anchor()
    </dfn>
    函数相同,区别是它会在新窗口打开链接.

你可以在第三个参数中指定JavaScript窗口属性来控制窗口的打开方式. 如果第三个参数没有设置,它会直接根据你的浏览器设置打开新窗口.这是一个属性设置的例子:
   </p>
   <code>
    $atts = array(
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'width'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> '800',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'height'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> '600',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'scrollbars' => 'yes',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'status'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'yes',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'resizable'&nbsp;&nbsp;=> 'yes',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'screenx'&nbsp;&nbsp;&nbsp;&nbsp;=> '0',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'screeny'&nbsp;&nbsp;&nbsp;&nbsp;=> '0'
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
    <br />
    <br />
    echo anchor_popup('news/local/123', 'Click Me!', $atts);
   </code>
   <p>
    注意: 以上是函数默认设置,你只要根据自己需要设置不同.如果你想函数使用默认设置,直接传一个空数组给第三个参数就行了:
   </p>
   <code>
    echo anchor_popup('news/local/123', 'Click Me!', array());
   </code>
   <h2>
    mailto()
   </h2>
   <p>
    创建标准HTML电子邮件链接.习惯用例:
   </p>
   <code>
    echo mailto('me@my-site.com', 'Click Here to Contact Me');
   </code>
   <p>
    像上面的
    <dfn>
     anchor()
    </dfn>
    一样, 你可以用第三个参数设置属性.
   </p>
   <h2>
    safe_mailto()
   </h2>
   <p>
    用法和上面的函数相同,区别是它用JavaScript写了基于顺序号码的不易识别的mailto版本标签,可以阻止email地址被垃圾邮件截获.
   </p>
   <h2>
    auto_link()
   </h2>
   <p>
    自动把包含URL和email地址的字串转换成链接. 例如:
   </p>
   <code>
    $string = auto_link($string);
   </code>
   <p>
    第二个参数决定URL和email是否都转换或其中一个转换.如果参数没有指定默认是两个都转换.Email links are encoded as safe_mailto() as shown above.
   </p>
   <p>
    只转换URL:
   </p>
   <code>
    $string = auto_link($string, 'url');
   </code>
   <p>
    只转换Email地址:
   </p>
   <code>
    $string = auto_link($string, 'email');
   </code>
   <p>
    第三个参数决定链接是否都在新窗口打开.参数值可以是TRUE 或 FALSE(boolean):
   </p>
   <code>
    $string = auto_link($string, 'both', TRUE);
   </code>
   <h2>
    url_title()
   </h2>
   <p>
    输入一个字符串并且创建用户友好的URL字串.举个例子,你有一个blog,而且你想在URL中使用条目的标题,这个函数就有用了.例如:
   </p>
   <code>
    $title = "What's wrong with CSS?";
    <br />
    <br />
    $url_title = url_title($title);
    <br />
    <br />
    // 输出:  Whats-wrong-with-CSS
   </code>
   <p>
    第二个参数指定单词之间的分隔符. 默认使用破折号'-'.  选项有:
    <dfn>
     dash 即'-'
    </dfn>
    , 或者
    <dfn>
     underscore 即'_'
    </dfn>
    :
   </p>
   <code>
    $title = "What's wrong with CSS?";
    <br />
    <br />
    $url_title = url_title($title, 'underscore');
    <br />
    <br />
    // 输出:  Whats_wrong_with_CSS
   </code>
   <p>
    第3个参数决定了是否强制转换为小写.默认情况下不会.参数类型为布尔值
    <dfn>
     TRUE
    </dfn>
    /
    <dfn>
     FALSE
    </dfn>
    :
   </p>
   <code>
    $title = "What's wrong with CSS?";
    <br />
    <br />
    $url_title = url_title($title, 'underscore', TRUE);
    <br />
    <br />
    // Produces:  whats_wrong_with_css
   </code>
   <h2>
    prep_url()
   </h2>
   <p>
    在URL中没有
    <kbd>
     http://
    </kbd>
    的情况下,这个函数可以附加上.像这样把URL字串传递给函数:
   </p>
   <code>
    $url = "example.com";
    <br />
    <br />
    $url = prep_url($url);
   </code>
   <h2>
    redirect()
   </h2>
   <p>
    通过发送HTTP头，命令客户端转向到您指定的URL。您既可以指定一个完整的URL，也可以对于站内内容，指定基于网站根目录的相对URL。本函数会自动根据您的配置文件，构造出完整的URL。
   </p>
   <p>
    你可以设定第二个参数为 location 定位操作(默认)或者 refresh 刷新操作。定位操作比刷新操作执行速度快，但是在Windows服务器上有时会报错。可选的第3个参数允许你发送一个特定的HTTP请求返回码 - 举例来说这可以用来创建303请求重定向来服务于搜索引擎. 默认的请求返回码是302(临时重定向). 第3个参数
    <em>
     只
    </em>
    使用于'location'重定向, 而不是用于'refresh'. 范例:
   </p>
   <code>
    if ($logged_in == FALSE)
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirect('/login/form/', 'refresh');
    <br />
    &#125;
    <br />
    <br />
    // with 301 redirect
    <br />
    redirect('/article/13', 'location', 301);
   </code>
   <p class="important">
    <strong>
     注意：
    </strong>
    由于此函数需要处理header头文件，因此它必须在向客户端输出任何内容之前调用。
    <br />
    <strong>
     注意：
    </strong>
    如果您想对HTTP头做更细致的设置，您可以使用
    <a href="../libraries/output.html">
     输出类
    </a>
    的 set_header() 函数。
   </p>
   <p>
    &nbsp;
   </p>
   <div id="Contributors">
    翻译贡献者:
Deloz, Hex, IT不倒翁, kkorange, linfj, LSvKing, mynameisjian, nardo, shamiao, yeto, yinzhili, 杜建宇
   </div>
   <div id="DocDate">
    最后修改: 2011-08-09 10:13:43
   </div>
  </div>
  <!-- END CONTENT -->
  <div id="footer">
   <p>
    上一个主题:&nbsp;&nbsp;
    <a href="/user_guide/helpers/typography_helper.html">
     排版辅助函数
    </a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;
    <a href="#top">
     页首
    </a>
    &nbsp;&middot;&nbsp;&nbsp;
    <a href="/user_guide/toc.html">用户指南目录</a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;
    <a href="/user_guide/helpers/xml_helper.html">
     XML 辅助函数
    </a>
   </p>
   <p>
    <a href="http://codeigniter.com">
     CodeIgniter
    </a>
    &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2011 &nbsp;&middot;&nbsp;
    <a href="http://ellislab.com/">
     Ellislab, Inc.
    </a>
   </p>
   <p>
    中文化:
    <a href="">
     CodeIgniter 中国
    </a>
    &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.20 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼
   </p>
  </div>
  
  <div style="display:none">
   
   <noscript>
    <a href="http://www.51.la/?3289908" target="_blank">
     <img alt="我要啦免费统计" src="http://img.users.51.la/3289908.asp" style="border:none" />
    </a>
   </noscript>
  </div>
 </body>
</html>